﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace Proyecta.Data.DAO
{
    public class UsuariosDAO:iDAO
    {
        conexion.SQL con = conexion.SQL.getSingleton();
        DataSet ds = null;
        string sqlsentencia;
        SqlCommand sqlcom;
        SqlDataAdapter Datos;

        public System.Data.DataSet Mostrar(object obj)
        {
            BO.UsuariosBO objeto = (BO.UsuariosBO)obj;
            sqlcom = new SqlCommand();
            Datos = new SqlDataAdapter();
            ds = new DataSet();
            sqlcom.Connection = con.conectar();
            con.abrir_conexion();
            Data.Sentencias.CrearSentencias ocs = new Sentencias.CrearSentencias();
            sqlsentencia = ocs.Select("Usuarios ", "ApellidoPaterno ", objeto.ApellidoPaterno, "eliminado", 0);
            sqlcom.CommandText = sqlsentencia;
            Datos.SelectCommand = sqlcom;
            Datos.Fill(ds);
            con.cerrar_conexion();
            return ds;
        }

        public DataSet MostrarporID(object obj)
        {
            BO.UsuariosBO objeto = (BO.UsuariosBO)obj;
            sqlcom = new SqlCommand();
            Datos = new SqlDataAdapter();
            ds = new DataSet();
            sqlcom.Connection = con.conectar();
            con.abrir_conexion();
            Data.Sentencias.CrearSentencias ocs = new Sentencias.CrearSentencias();
            sqlsentencia = ocs.SelectInt("Usuarios ", "idUsuario ", objeto.idUsuario);
            sqlcom.CommandText = sqlsentencia;
            Datos.SelectCommand = sqlcom;
            Datos.Fill(ds);
            con.cerrar_conexion();
            return ds;
        }

        public DataSet MostrarporRol(object obj)
        {
            BO.UsuariosBO objeto = (BO.UsuariosBO)obj;
            sqlcom = new SqlCommand();
            Datos = new SqlDataAdapter();
            ds = new DataSet();
            sqlcom.Connection = con.conectar();
            con.abrir_conexion();
            Data.Sentencias.CrearSentencias ocs = new Sentencias.CrearSentencias();
            sqlsentencia = ocs.Select("Usuarios ", "idRol ", objeto.idRol.ToString());
            sqlcom.CommandText = sqlsentencia;
            Datos.SelectCommand = sqlcom;
            Datos.Fill(ds);
            con.cerrar_conexion();
            return ds;
        }

        public DataSet MostrarporEmail(object obj)
        {
            BO.UsuariosBO objeto = (BO.UsuariosBO)obj;
            sqlcom = new SqlCommand();
            Datos = new SqlDataAdapter();
            ds = new DataSet();
            sqlcom.Connection = con.conectar();
            con.abrir_conexion();
            Data.Sentencias.CrearSentencias ocs = new Sentencias.CrearSentencias();
            sqlsentencia = ocs.Select("Usuarios ", "Email ", objeto.Email);
            sqlcom.CommandText = sqlsentencia;
            Datos.SelectCommand = sqlcom;
            Datos.Fill(ds);
            con.cerrar_conexion();
            return ds;
        }

        public void Insertar(object obj)
        {
            BO.UsuariosBO objeto = (BO.UsuariosBO)obj;
            Database.DatabaseHelper dbh = new Database.DatabaseHelper();
            dbh.Open();
            dbh.Insert(objeto, "Usuarios", "idUsuario");
            dbh.Close();
        }

        public void Modificar(object obj)
        {
            BO.UsuariosBO objeto = (BO.UsuariosBO)obj;
            Database.DatabaseHelper dbh = new Database.DatabaseHelper();
            dbh.Open();
            dbh.Update(objeto, "Usuarios", "idUsuario");
            dbh.Close();
        }

        public int Eliminar(object obj)
        {
            BO.UsuariosBO objeto = (BO.UsuariosBO)obj;
            sqlcom = new SqlCommand();
            ds = new DataSet();
            sqlcom.Connection = con.conectar();
            con.abrir_conexion();
            Data.Sentencias.CrearSentencias ocs = new Sentencias.CrearSentencias();
            sqlsentencia = ocs.DeleteInt("Usuarios", objeto.idUsuario, 1, " idUsuario", objeto.idUsuario);
            sqlcom.CommandText = sqlsentencia;
            return sqlcom.ExecuteNonQuery();
        }


        public void Delete(object obj)
        {
            BO.UsuariosBO objeto = (BO.UsuariosBO)obj;
            Database.DatabaseHelper dbh = new Database.DatabaseHelper();
            dbh.Open();
            dbh.Delete(objeto, "Usuarios", "idUsuario");
            dbh.Close();
        }
    }
}
